//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: DataDeal.c
//创建人  	: Handry
//创建日期	: 
//描述	    : 电池数据处理头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================
#ifndef __DATADEAL_H
#define	__DATADEAL_H

//=============================================================================================
//包含头文件
//=============================================================================================
#include "BSPTypeDef.h"
#include "BatteryInfo.h"

//=============================================================================================
//宏参数设定
//=============================================================================================
#ifdef      LFP_AK_15000MAH_16S
#define		DATADEAL_DEFULT_CELLVOLT	3200
#define		DATADEAL_DEFULT_CELLTEMP	250
#elif       defined(SY_PB_32000MAH_14S) || defined(SY_PB_32000MAH_16S) || defined(SY_PB_32000MAH_17S)
#define		DATADEAL_DEFULT_CELLVOLT	3700
#define		DATADEAL_DEFULT_CELLTEMP	250
#elif       defined(LFP_TB_20000MAH_20S)
#define		DATADEAL_DEFULT_CELLVOLT	3200
#define		DATADEAL_DEFULT_CELLTEMP	250
#elif       defined(LFP_HL_25000MAH_16S) || defined(LFP_PH_20000MAH_20S) || defined(LFP_GF_25000MAH_16S)
#define		DATADEAL_DEFULT_CELLVOLT	3200
#define		DATADEAL_DEFULT_CELLTEMP	250
#else
#define		DATADEAL_DEFULT_CELLVOLT	3700
#define		DATADEAL_DEFULT_CELLTEMP	250
#endif

//电压下降，温度上升宏
#define     DATADEAL_VOLT_REFRESH_PERIOD     12     //电压12s刷新周期,10个buff，最终下降速度为120S
#define     DATADEAL_VOLT_BUFF_LEN           10
#define     DATADEAL_TEMP_REFRESH_PERIOD     1      //温度1s刷新周期，10个buff，最终上升速度为10S
#define     DATADEAL_TEMP_BUFF_LEN           10

//充满条件宏
#define     FULL_CHARGE_CELL_VOLT_LV1       (MAX_CHG_VOLT - 50)	//满充后，最小电压小于此值时，soc为99%
#define     FULL_CHARGE_CELL_VOLT_LV2       (MAX_CHG_VOLT - 10)

//首次标志
#define     DATADEAL_FIRST_FLAG_VOLT       (0x01)	    //首次标志：电压位
#define     DATADEAL_FIRST_FLAG_TEMP       (0x02)	    //首次标志：温度位

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================
extern u8 gTempRunAwayCnt[BAT_ALL_TEMP_NUM];                   //热失控、温度失控计数
extern u8 gDataDealFirstFlag;                                  //数据处理首次标志，避免因休眠唤醒导致的电压下降异常

//=============================================================================================
//声明接口函数
//=============================================================================================
//=============================================================================================
//函数名称	: void DataDealDataInit(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 电池数据初始化函数
//注意事项	:
//=============================================================================================
void DataDealDataInit(void);

//=============================================================================================
//函数名称	: void DataDealGetBMSDataRdy(u8 mask)
//输入参数	: mask:希望关注的相应位
//输出参数	: void
//函数功能	: 电池数据确认准备好获取
//注意事项	:
//=============================================================================================
u8 DataDealGetBMSDataRdy(u8 mask);

//=============================================================================================
//函数名称	: void DataDealSetBMSDataRdy(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 设置电池数据准备标志
//注意事项	:
//=============================================================================================
void DataDealSetBMSDataRdy(e_DataRdy set);

//=============================================================================================
//函数名称	: void DataDealVoltCharaTask(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 电压特征信息计算任务
//注意事项	:
//=============================================================================================
void DataDealVoltCharaTask(void);

//=============================================================================================
//函数名称	: void DataDealFiltSOCTask(void)
//输入参数	: void
//输出参数	: void
//函数功能	: SOC信息处理任务
//注意事项	: 100ms周期
//=============================================================================================
void DataDealFiltSOCTask(void);

//=============================================================================================
//函数名称	: void DataDealFiltCurrTask(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 电流信息处理任务
//注意事项	: 250ms周期
//=============================================================================================
void DataDealFiltCurrTask(void);

//=============================================================================================
//函数名称	: void DataDealFuelTask(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 电量计信息处理任务
//注意事项	: 100ms周期
//=============================================================================================
void DataDealFuelTask(void);

//=============================================================================================
//函数名称	: void DataDealTempCharaTask(void)
//输入参数	: void
//输出参数	: void
//函数功能	: 温度特征信息计算任务
//注意事项	:
//=============================================================================================
void DataDealTempCharaTask(void);

#endif

/*****************************************end of DataDeal.h*****************************************/
